/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

/**
 *
 * @author Pablo
 */
@Entity
public class Usuario implements Serializable {
    
    @OneToOne(mappedBy = "responsable")
    private LoteIngresoRepuesto loteIngresoRepuesto;
    @OneToOne(mappedBy = "responsable")
    private IngresoRepuesto ingresoRepuesto;
    @OneToOne(mappedBy = "responsable")
    private SalidaCombustible salidaCombustible;
    @OneToOne(mappedBy = "responsable")
    private IngresoCombustible ingresoCombustible;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String apellidos;
    private String nombres;
    private String user_name;
    private String user_password;
    private boolean activo;   

    public boolean isActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }    
    
    @ManyToMany(cascade = CascadeType.MERGE)
    @JoinTable(
            name = "USER_TIPO",
            joinColumns = {
                @JoinColumn(name = "USER_ID", referencedColumnName = "id")},
            inverseJoinColumns = {
                @JoinColumn(name = "TIPO_ID", referencedColumnName = "id")})        
    private List<TipoUsuario> tipoUsuario;
    
    @ManyToMany(cascade = CascadeType.MERGE)
    @JoinTable(
            name = "USER_FUNCIONALIDAD",
            joinColumns = {
                @JoinColumn(name = "USER_ID", referencedColumnName = "id")},
            inverseJoinColumns = {
                @JoinColumn(name = "FUNC_ID", referencedColumnName = "id")})
    private List<Funcionalidad> funcionalidads;

    @OneToMany(mappedBy = "encargado")
    private List<CambioRepuestosLote> ls_cambio_repuesto;

    public List<Funcionalidad> getFuncionalidads() {
        return funcionalidads;
    }

    public void setFuncionalidads(List<Funcionalidad> funcionalidads) {
        this.funcionalidads = funcionalidads;
    }
    
    public List<TipoUsuario> getTipoUsuario() {
        return tipoUsuario;
    }

    public void setTipoUsuario(List<TipoUsuario> tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    public String getApellidos() {
        return apellidos;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_password() {
        return user_password;
    }

    public void setUser_password(String user_password) {
        this.user_password = user_password;
    }

    public List<CambioRepuestosLote> getLs_cambio_repuesto() {
        return ls_cambio_repuesto;
    }

    public void setLs_cambio_repuesto(List<CambioRepuestosLote> ls_cambio_repuesto) {
        this.ls_cambio_repuesto = ls_cambio_repuesto;
    }

    public LoteIngresoRepuesto getLoteIngresoRepuesto() {
        return loteIngresoRepuesto;
    }

    public void setLoteIngresoRepuesto(LoteIngresoRepuesto loteIngresoRepuesto) {
        this.loteIngresoRepuesto = loteIngresoRepuesto;
    }

    public IngresoRepuesto getIngresoRepuesto() {
        return ingresoRepuesto;
    }

    public void setIngresoRepuesto(IngresoRepuesto ingresoRepuesto) {
        this.ingresoRepuesto = ingresoRepuesto;
    }

    public SalidaCombustible getSalidaCombustible() {
        return salidaCombustible;
    }

    public void setSalidaCombustible(SalidaCombustible salidaCombustible) {
        this.salidaCombustible = salidaCombustible;
    }

    public IngresoCombustible getIngresoCombustible() {
        return ingresoCombustible;
    }

    public void setIngresoCombustible(IngresoCombustible ingresoCombustible) {
        this.ingresoCombustible = ingresoCombustible;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Usuario)) {
            return false;
        }
        Usuario other = (Usuario) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return user_name;
    }
    
    /*
   
    */

}
